import numpy as np, pandas as pd

# DataFrame是一种二维表格数据结构
# DataFrame有三种常见的创建方法：通过列表创建、通过字典创建及通过二维数组创建。
# 1、通过列表创建DataFrame
# 1.1
a = pd.DataFrame([[1, 2], [3, 4], [5, 6]])
print(a)
# 1.2 可以给加列(column)和行(index)索引名称
a = pd.DataFrame([[1, 2], [3, 4], [5, 6]], columns=['date', 'score'], index=['A', 'B', 'C'])
print(a)
# 1.3 可以先创建一个空DataFrame，通过列表生成DataFrame
a = pd.DataFrame()
date = [1, 3, 5]
score = [2, 4, 6]
a['日期'] = date
a['战斗值'] = score
print(a)
print('++++++++++++++')
# 2、通过字典创建DataFrame
b = pd.DataFrame({'日期': [1, 3, 5], '战斗值': [2, 4, 6]}, index=['x', 'y', 'z'])
print(b)
# 如果想让字典键变成行索引，可以通过from_dict的方式，并同时设置orient参数为index
b = pd.DataFrame.from_dict({'日期': [1, 3, 5], '战斗值': [2, 4, 6]}, orient='index')
print(b)
# 通过 .T 进行行列转换
b = pd.DataFrame({'日期': [1, 3, 5], '战斗值': [2, 4, 6]}, index=['x', 'y', 'z'])
print(b)
print(b.T)
print('++++++++++++++')
# 3、通过二维数组创建
c = np.arange(12).reshape(3, 4)
print(c)
d = pd.DataFrame(np.arange(12).reshape(3, 4), columns=['A', 'B', 'C', 'D'], index=[1, 2, 3])
print(d)

a = pd.DataFrame([['2021', 2], ['2022', 4]], columns=['date', 'score'], index=['A', 'B'])
print(a)
# 通过rename之后并没有改变原表格结构，需要重新赋值给a才能改变原表格;或者在rename()中设置inplace参数为True，也能实现真正替换
a = a.rename(columns={'date':'日期','score':'战斗值'}, index={'A':'阿里','B':'腾讯'})
print(a)
a.rename(columns={'战斗值':'股价'},inplace=True)
print(a)
# 打印所有的索引
print(a.index.values)
# 设定索引列名称
a.index.name = '公司'
print(a)
# 设置索引名称 即将某列当作索引来使用
a.set_index('日期',inplace=True)
print(a)
# 索引重置
a.reset_index(inplace=True)
print(a)